package com.liy.cloud.common.utils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.regex.Pattern;
/**
 * @Auther: libs
 * @Date: 2018/8/10 10:28
 * @Description: 日期类型校验
 */
public class DateValidator {

    public static boolean validate(String date, DateType dateType){
        // 不做验证
        if(DateType.NO_VALIDATE.equals(dateType)){
            return true;
        }
        if (date == null){
            return false;
        }
        // 匹配正则表达式
        Pattern pattern = Pattern.compile(dateType.getRegex());
        if (!pattern.matcher(date).matches()) {
            return false;
        }
        // 验证时间戳（判断是否为Long类型）
        if(DateType.TIMESTAMP.equals(dateType)){
            try{
                Long.parseLong(date);
                return true;
            } catch (NumberFormatException e){
                return false;
            }
        }
        // 验证日期是否合法
        DateFormat format = new SimpleDateFormat(dateType.getPattern());
        // 严格校验，不合法的日期格式不自动转换
        format.setLenient(false);
        try{
            format.parse(date);
        }catch(ParseException e){
            return false;
        }
        return true;
    }
}
